mybatis查找的结果集对象中包含对象和集合的用法 | 您所在的位置:网站首页 › mybatis 嵌套查询给子集加过滤条件 › mybatis查找的结果集对象中包含对象和集合的用法 |
平时项目中使用mybatis查询数据库,对象结果集可能比较复杂,对象中嵌套对象或者集合。 如下图所示,返回结果集对象project中包含其他子对象(查询的主表与关联子表数据一对一关系)和list集合(查询的主表与关联子表数据一对多关系): 解决方案: 对象下面嵌套的对象采用写法,嵌套的集合采用写法 写法实例: (1)其中projectInfo与projectCharge对象为Project的嵌套对象,采用写法,而requires是list集合,采用写法
SQL写法: (2)写法不变,中采用ofType属性指向集合中的元素类型
SQL写法: (3)projectInfo与projectCharge对象仍然采用写法,requires采用内部嵌套查询方式
对应的sql片段: 注意:这里嵌套的查询getProjectRequire查询中parameterType采用Map,标签中的column多个参数写法也需按照上述规范,=左边的是getProjectRequire这个方法中的入参名称,==右边是getProjectDetail这个查询方法中的查询出来对应的字段名称。另外,结果集中各个标签顺序也是有规定的:(constructor?, id*, result*, association*, collection*, discriminator?),不按照这个规定,编译会报错 三种写法的比较: 通过日志打印sql发现,其中第一种和第二种写法都只查询了一次sql,第三种查询了两次sql,但是用的是一个sql连接,并不是新建一个sql连接,所以性能上差别不大,但是第三种写法明显复杂不少,推荐第一种和第二种写法。 |
CopyRight 2018-2019 实验室设备网 版权所有 |